Grundkurs SQL

4.4.1  Gruppieren nach mehreren Kriterien

In der Tabelle tbl_plz sind zu den Postleitzahlen die Orte und Telefonvorwahlen abgespeichert. Wenn man diese Tabelle mit der Mitarbeitertabelle (tbl_mitarbeiter) verknüpft, können die Wohnorte der Mitarbeiter mit angezeigt werden.

Nun wollen wir wieder wissen, wie viele Mitarbeiter in einer bestimmten Position angestellt sind und die Liste soll zusätzlich noch durch die Orte gruppiert werden. Sie können sich mal kurz Gedanken darüber machen, bevor Sie auf die Lösung schauen.

[14]SELECT   position AS PositionsID, COUNT(ort) AS Anzahl_Mitarbeiter, ort AS Ort
FROM     tbl_mitarbeiter
         NATURAL JOIN tbl_plz
GROUP BY position, ort

Wie wir an diesem Beispiel sehen, ist Gruppieren in der Bedeutung "zusammenfassen" hier nicht die richtige Übersetzung. Es müsste eher "aufteilen" heißen. Es werden innerhalb einer Gruppierung weitere Gruppen gebildet, indem die Position des Mitarbeiters (hier nur die ID's von NULL, 1, …, 7) noch einmal nach Orten gruppiert werden. Die COUNT-Funktion berechnet uns wieder die Anzahl aller Datensätze für jede Gruppe (im Beispiel die vorhandenen Mitarbeiter der jeweiligen Gruppe).

In dieser Abfrage können wir auch einen NATURAL JOIN verwenden, da die beiden Schlüssel dieselben Bezeichnungen verwenden – nämlich plz. Sie können auch gerne mit anderen Verbundarten, wie zum Beispiel dem LEFT JOIN experimentieren.

 

GROUP BY ist nicht ganz leicht zu verstehen. Darum sollten Sie die Beispiele selbst ausprobieren und herausfinden, was der Befehl macht.